package com.itheima.extends6constructor; // 包声明：定义该类所在的文件夹路径，帮助管理类的组织结构

public class Student { // 公共类Student：public修饰表示可以被其他包访问
    private String name; // 私有成员变量name：存储学生姓名，private修饰表示只能在类内部访问
    private char sex; // 私有成员变量sex：存储学生性别，private修饰表示只能在类内部访问
    private int age; // 私有成员变量age：存储学生年龄，private修饰表示只能在类内部访问
    private String schoolName; // 私有成员变量schoolName：存储学校名称，private修饰表示只能在类内部访问

    public Student() { // 无参构造方法：用于创建Student对象的默认构造函数
    } // 无参构造方法结束

    public Student(String name, char sex, int age) { // 三参构造方法：接收姓名、性别和年龄参数
        // this调用兄弟构造器：在构造方法中调用本类的其他构造方法
        // 注意：super(...) this(...) 必须写在构造器的第一行，而且两者不能同时出现
        this(name, sex, age, "黑马程序员"); // 调用本类的四参构造方法，传入参数并设置默认学校名称
    } // 三参构造方法结束

    public Student(String name, char sex, int age, String schoolName) { // 四参构造方法：接收姓名、性别、年龄和学校名称参数
        // super(); // 必须在第一行：调用父类的无参构造方法，Java会自动添加，除非显式调用
        this.name = name; // 使用this关键字区分成员变量和局部变量，将参数name赋值给成员变量name
        this.sex = sex; // 使用this关键字区分成员变量和局部变量，将参数sex赋值给成员变量sex
        this.age = age; // 使用this关键字区分成员变量和局部变量，将参数age赋值给成员变量age
        this.schoolName = schoolName; // 使用this关键字区分成员变量和局部变量，将参数schoolName赋值给成员变量schoolName
    } // 四参构造方法结束

    public String getName() { // getter方法：用于获取name属性的值，提供了对私有变量的受控访问
        return name; // 返回name属性的值
    } // getName方法结束

    public void setName(String name) { // setter方法：用于设置name属性的值，提供了对私有变量的受控修改
        this.name = name; // 使用this关键字区分成员变量和局部变量，将参数name赋值给成员变量name
    } // setName方法结束

    public char getSex() { // getter方法：用于获取sex属性的值，提供了对私有变量的受控访问
        return sex; // 返回sex属性的值
    } // getSex方法结束

    public void setSex(char sex) { // setter方法：用于设置sex属性的值，提供了对私有变量的受控修改
        this.sex = sex; // 使用this关键字区分成员变量和局部变量，将参数sex赋值给成员变量sex
    } // setSex方法结束

    public int getAge() { // getter方法：用于获取age属性的值，提供了对私有变量的受控访问
        return age; // 返回age属性的值
    } // getAge方法结束

    public void setAge(int age) { // setter方法：用于设置age属性的值，提供了对私有变量的受控修改
        this.age = age; // 使用this关键字区分成员变量和局部变量，将参数age赋值给成员变量age
    } // setAge方法结束

    public String getSchoolName() { // getter方法：用于获取schoolName属性的值，提供了对私有变量的受控访问
        return schoolName; // 返回schoolName属性的值
    } // getSchoolName方法结束

    public void setSchoolName(String schoolName) { // setter方法：用于设置schoolName属性的值，提供了对私有变量的受控修改
        this.schoolName = schoolName; // 使用this关键字区分成员变量和局部变量，将参数schoolName赋值给成员变量schoolName
    } // setSchoolName方法结束

    @Override // 重写注解：告诉编译器这是一个重写的方法，编译器会检查是否符合重写规则
    public String toString() { // 重写的toString方法：返回对象的字符串表示，方便打印和调试
        return "Student{" + // 返回一个包含所有属性的字符串表示
                "name='" + name + '\'' + // 拼接name属性的值
                ", sex=" + sex + // 拼接sex属性的值
                ", age=" + age + // 拼接age属性的值
                ", schoolName='" + schoolName + '\'' + // 拼接schoolName属性的值
                '}'; // 结束大括号
    } // toString方法结束
} // Student类结束
